package com.foreknow.practice.lala;

import java.util.Scanner;

public class Test13 {
    //输出菜单方法
    public static void menu(){
        System.out.println("----------------------------");
        System.out.println("----------欢迎登录-----------");
        System.out.println("----------中国人民银行-----------");
        System.out.println("----------版本1.0-----------");
        System.out.println("----------------------------");
    }
    //登录方法

    /**
     *
     * @return
     */
    public static boolean login(String user ,String pwd){
        Scanner input = new Scanner(System.in);
        for(int i = 3;i > 0;i--) {
            //接收用户的输入
            System.out.println("请输入账号: ");
            String new_user = input.next();
            System.out.println("请输入密码: ");
            String new_pwd = input.next();
            // 判断参数与用户接收到的用户名和密码是否匹配
            if(user.equals(new_user) && pwd.equals(new_pwd)) {
                //登录成功
                System.out.println("登录成功");
                return true;
            }else {
                if(i - 1 == 0) {
                    System.out.println("密码错误3次，吞卡");
                    //退出系统
                    System.exit(0);
                }
                //提示用户还有几次机会
                System.out.println("用户名或密码错误，请重新输入今日还有"+(i-1)+"次机会");
            }
        }
        return false;
    }
    //查询余额方法
    public static void checkMoney(double money){
        System.out.println("您的余额为:"+money);
    }
    //存款
    public static double setMoney(double money){
        Scanner input = new Scanner(System.in);
        //输入存款金额
        System.out.println("请输入存款金额");
        double addMoney = input.nextDouble();
        if (addMoney>10000){
            System.out.println("单次存款金额超过万元");
            return 0;
        }else if (addMoney<0){
            System.out.println("存款金额错误");
            return 0;
        }else if (addMoney%100!=0){
            System.out.println("请输入100的整数倍");
            return 0;
        }else {
            System.out.println("存款成功,总余额为:"+(addMoney+money));

        }
        return addMoney;
    }
    //取款
    public static double getMoney(double money){
        Scanner input = new Scanner(System.in);
        //输入取款金额
        System.out.println("请输入取款金额");
        double subMoney = input.nextDouble();
        if (subMoney>money){
            System.out.println("余额不足");
            return 0;
        }else if (subMoney>3000){
            System.out.println("单次取款金额超过3000");
            return 0;
        }else if (subMoney<0){
            System.out.println("取款金额错误");
            return 0;
        }else if (subMoney%100!=0){
            System.out.println("请取出100的整数倍");
            return 0;
        }else {
            System.out.println("取款成功,你的余额为:"+(money-subMoney));
        }
        return subMoney;
    }
    //修改密码
    public static String changePwd(String pwd){
        Scanner input = new Scanner(System.in);
        //请输入旧密码
        System.out.println("请输入旧密码");
        String old_pwd = input.next();
        if (old_pwd.equals(pwd)){
            System.out.println("请输入新密码: ");
            String new_pwd = input.next();
            System.out.println("请再次输入新密码: ");
            String confirm_pwd = input.next();
            if (new_pwd.equals(confirm_pwd)){
                System.out.println("修改密码成功,当前密码为:"+new_pwd);
            }else {
                System.out.println("两次密码不一样,请从新输入,当前密码为:");
                return pwd;
            }

        }else {
            System.out.println("旧密码输入错误");
        }
        return pwd;
    }
    /**
     * 判断用户是否继续(y/n)
     * 思考：如果用户输入的不是y也不是n 输错错误了。需要提示用户输入错误，请重新输入。
     */
    public static void decide(){
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续操作(y/n)");
        //接收用户的输入
        String choice = input.next();
        if (choice.equals("y")){
            return;
        }else if (choice.equals("n")){
            System.out.println("退出系统");
            System.exit(0);
        }else {
            //当输入错误时
            while (true){
                System.out.println("操作错误,是否继续操作(y/n)");
                //接收用户的输入
                String choice1 = input.next();
                if (choice1.equals("y")){
                    return;
                }else if (choice1.equals("n")){
                    System.out.println("退出系统");
                    System.exit(0);
                }
            }
        }
    }
    public static void main(String[] args) {
        //初始化信息(用户名,密码,余额)
        String user = "admin";//用户名
        String pwd = "123";//密码
        double money=10000;//余额
        Scanner input = new Scanner(System.in);
        //调用菜单
        Test13.menu();
        //登录 调用login()登录
        boolean isRight = login(user,pwd);
        //登录成功后
        while (isRight){
            //循环操作
            while (true){
                System.out.println("1. 查询余额   2.存款     3.取款     4.修改密码     5.退出");
                System.out.println("请选择菜单: ");
                int choice = input.nextInt();
                switch (choice){
                    case 1:
                        //查询余额
                        checkMoney(money);
                        //是否继续(y/n)
                        decide();
                        break;
                    case 2:
                        //存款
                       money+= setMoney(money);
                       //是否继续
                        decide();
                        break;
                    case 3:
                        //取款 getMoney()
                        money-=getMoney(money);
                        decide();
                        break;
                    case 4:
                        //修改密码 changePwd()
                        String str = changePwd(pwd);
                        System.out.println("当前密码为"+str);
                        decide();
                        break;
                    case 5:
                        System.out.println("退出成功");
                        System.exit(0);
                        //退出
                        break;
                }
            }
        }
    }
}
